const puppeteer = require('puppeteer');

module.exports = async (item) => {
  let is_valid_item = false;

  const browser = await puppeteer.launch({
    headless: false,
    slowMo: 100,
    args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--disable-dev-shm-usage',
      '--disable-accelerated-2d-canvas',
      '--disable-gpu',
      '--window-size=1920x1080'
    ]
  });

  const page = await browser.newPage();
  await page.goto(item.url, {
    waitUntil: 'load'
  });

  const priceElement = await page.$('div#priceCalculationConfig');
  let price;

  // 如果当前商品有库存就会展示价格，没有价格就是没有商家在出售
  if (priceElement) {
    price = await page.evaluate(el => el.dataset?.price, priceElement);
  } else {
    price = "JP¥9,900";
  }

  console.log(item.name, price)

  const price_num = Number(price.replace(/[^0-9]/ig, ""));

  // 乐天中，价格可能是一直展示的，所以还需要判断页面是否有 《该产品已售完》 这几个字来判断是否有库存
  // 在页面上下文中查找包含“该产品已售完”文本的元素
  const elementText = await page.evaluate(() => {
    const elements = document.querySelectorAll('*');
    for (let element of elements) {
      if (element.textContent.includes('该产品已售完') || element.textContent.includes('この商品は売り切れです')) {
        return element.textContent;
      }
    }
    return null;
  });
  // const [element] = await page.$x("//*[contains(text(), '该产品已售完')]");

  if (price_num <= item.price) {
    if (!elementText) {
      is_valid_item = true;
    }
    // validArr.push(item);
  }

  await page.close();
  await browser.close();

  return is_valid_item ? item : null;
}